home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include <string.h>
- #include <dos.h>
-
- struct video {
- int segment;
- int type;
- int iscolor;
- int mode;
- int page;
- int rows;
- int cols;
- };
-
- void initvideo(void);
- void getvconfig(struct video *);
-
- /*
- ** descriptors for each display code starting with code 00
- */
- char *types[] = {
- "[00] No display",
- "[01] Monochrome Display Adapter (MDA) w/mono display",
- "[02] Color Graphics Adapter (CGA) w/color display",
- "[03] <reserved>",
- "[04] Enhanced Graphics Adapter (EGA) w/color display",
- "[05] Enhanced Graphics Adapter (EGA) w/mono display",
- "[06] Professional Graphics System (PGS) w/color display",
- "[07] Video Graphics Array (VGA) w/analog mono display",
- "[08] Video Graphics Array (VGA) w/analog color display",
- "[09] <reserved>",
- "[10] <reserved>",
- "[11] Multi-Color Graphics Array (MCGA) w/analog mono display",
- "[12] Multi-Color Graphics Array (MCGA) w/analog color display",
- "Unknown display combination code",
- };
-
- struct video v;
- int color = 0x07;
-
- /*
- ** writes a string at the specified location
- ** by writing directly to video memory
- */
- void vwrite(char *str,int row,int col,int color)
- {
- char far *screen;
-
- FP_SEG(screen) = v.segment;
- FP_OFF(screen) = (((row - 1) * v.cols) + (col - 1)) * 2;
-
- while(*str) {
- *screen++ = *str++;
- *screen++ = (char)color;
- }
- } /* vwrite */
-
- void main(int argc, char *argv[])
- {
- int blkwht = 0;
- char buffer[81];
-
- /* force black and white if /b option was given */
- if(argc)
- if(!stricmp(argv[1],"/B"))
- blkwht = 1;
-
- /* detect host display type */
- initvideo();
-
- /* fill our video data structure */
- getvconfig(&v);
-
- if(v.iscolor && !blkwht)
- color = 0x1F;
-
- /* print out values */
- sprintf(buffer,"v.segment : %04X",v.segment);
- vwrite(buffer,3,1,color);
- sprintf(buffer,"v.type : %s",
- (v.type >= 0 && v.type <= 13) ? types[v.type] : types[13]);
- vwrite(buffer,4,1,color);
- sprintf(buffer,"v.iscolor : %d",v.iscolor);
- vwrite(buffer,5,1,color);
- sprintf(buffer,"v.mode : %d",v.mode);
- vwrite(buffer,6,1,color);
- sprintf(buffer,"v.page : %d",v.page);
- vwrite(buffer,7,1,color);
- sprintf(buffer,"v.rows : %d",v.rows);
- vwrite(buffer,8,1,color);
- sprintf(buffer,"v.cols : %d",v.cols);
- vwrite(buffer,9,1,color);
-
- } /* main */
-
-
-
-